package com.multithreading.Thread_003;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * @author zx
 * @version 1.0
 * @package_name: com.multithreading.Thread_003
 * @date 2024/5/13 17:46
 */
public class ThreadDemo {
    /**
     * 多线程第三种实现方式
     * 1.创建一个类MyCallable实现Callable接口
     * 2.重写call方法(是有返回值的，表示线程运行的结果)
     * 3.创建MyCallable实现类的对象
     * 4.创建FutureTask对象，将Callable接口实现类的对象作为构造参数传递到FutureTask的构造器中
     * 5.创建Thread对象，并启动
     */

    public static void main(String[] args) throws ExecutionException, InterruptedException {

        //创建MyCallable实现类的对象
        MyCallable mc = new MyCallable();
        //创建FutureTask对象，将Callable接口实现类的对象作为构造参数传递到FutureTask的构造器中
        FutureTask<Integer> ft = new FutureTask<>(mc);
        //创建Thread对象，并启动
        Thread thread = new Thread(ft);
        //设置线程名称
        thread.setName("线程1");
        //启动线程
        thread.start();
        Integer integer = ft.get();
        System.out.println(integer);
    }
}
